/**
 * @file: antd vue框架的通用工具文件
 */

export function timeFix() {
    const time = new Date();
    const hour = time.getHours();
    return hour < 9
        ? '早上好'
        : hour <= 11
        ? '上午好'
        : hour <= 13
        ? '中午好'
        : hour < 20
        ? '下午好'
        : '晚上好';
}

// 随机欢迎文字
export function welcome() {
    const arr = ['欢迎'];
    const index = Math.floor(Math.random() * arr.length);
    return arr[index];
}

/**
 * 触发 window.resize
 */
export function triggerWindowResizeEvent() {
    const event = document.createEvent('HTMLEvents');
    event.initEvent('resize', true, true);
    event.eventType = 'message';
    window.dispatchEvent(event);
}

export function handleScrollHeader(callback) {
    let timer = 0;

    let beforeScrollTop = window.pageYOffset;
    callback = callback || function () {};
    window.addEventListener(
        'scroll',
        event => {
            clearTimeout(timer);
            timer = setTimeout(() => {
                let direction = 'up';
                const afterScrollTop = window.pageYOffset;
                const delta = afterScrollTop - beforeScrollTop;
                if (delta === 0) {
                    return false;
                }
                direction = delta > 0 ? 'down' : 'up';
                callback(direction);
                beforeScrollTop = afterScrollTop;
            }, 50);
        },
        false
    );
}

export function isIE() {
    const bw = window.navigator.userAgent;
    const compare = s => bw.indexOf(s) >= 0;
    const ie11 = (() => 'ActiveXObject' in window)();
    return compare('MSIE') || ie11;
}

/**
 * Remove loading animate
 * @param {string} id parent element id or class
 * @param {number} timeout 动画完成时间
 */
export function removeLoadingAnimate(id = '', timeout = 1500) {
    if (id === '') {
        return;
    }
    setTimeout(() => {
        document.body.removeChild(document.getElementById(id));
    }, timeout);
}
export function scorePassword(pass) {
    let score = 0;
    if (!pass) {
        return score;
    }
    // award every unique letter until 5 repetitions
    const letters = {};
    for (let i = 0; i < pass.length; i++) {
        letters[pass[i]] = (letters[pass[i]] || 0) + 1;
        score += 5.0 / letters[pass[i]];
    }

    // bonus points for mixing it up
    const variations = {
        digits: /\d/.test(pass),
        lower: /[a-z]/.test(pass),
        upper: /[A-Z]/.test(pass),
        nonWords: /\W/.test(pass)
    };

    let variationCount = 0;
    for (var check in variations) {
        variationCount += variations[check] === true ? 1 : 0;
    }
    score += (variationCount - 1) * 10;

    return parseInt(score, 10);
}

export function getNotEmptyObjectOrNull(obj) {
    console.log(obj);
    if (!obj) {
        return undefined;
    }
    if (Object.getOwnPropertyNames(obj).length <= 0) {
        return undefined;
    }
    return obj;
}
